home *** CD-ROM | disk | FTP | other *** search
Wrap
MUPFEL(1) Benutzerkommandos MUPFEL(1) N✓NA✓AM✓ME✓E mupfel - Kommandointerpreter und interaktive Shell S✓SY✓YN✓NO✓OP✓PS✓SI✓IS✓S mupfel [-aCefhiklnrtSuvx] [ _✓K_✓o_✓m_✓m_✓a_✓n_✓d_✓o_✓d_✓a_✓t_✓e_✓i [ _✓A_✓r_✓g_✓u_✓m_✓e_✓n_✓t... ]] mupfel -c [-aCefhiklnrtSuvx] _✓Z_✓e_✓i_✓c_✓h_✓e_✓n_✓k_✓e_✓t_✓t_✓e [ _✓N_✓a_✓m_✓e [ _✓A_✓r_✓g_✓u_✓m_✓e_✓n_✓t... ] ] mupfel -s [-aCefhiklnrtSuvx] [ _✓A_✓r_✓g_✓u_✓m_✓e_✓n_✓t... ] B✓BE✓ES✓SC✓CH✓HR✓RE✓EI✓IB✓BU✓UN✓NG✓G Die m✓mu✓up✓pf✓fe✓el✓l ist ein Kommandointerpreter, der Anweisungen vom Termi- nal oder aus einer Datei entgegennimmt und ausführt. Sie richtet sich nach den Vorgaben der POSIX-Norm (P1003.2: _✓S_✓h_✓e_✓l_✓l_✓s_✓ _✓a_✓n_✓d_✓ _✓U_✓t_✓i_✓l_✓i_✓- _✓t_✓i_✓e_✓s) und ähnelt daher historischen Vorbildern wie der _✓B_✓o_✓u_✓r_✓n_✓e_✓ _✓S_✓h_✓e_✓l_✓l (s✓sh✓h(1)), ✓ _✓B_✓o_✓u_✓r_✓n_✓e_✓-_✓A_✓g_✓a_✓i_✓n_✓ _✓S_✓h_✓e_✓l_✓l (b✓ba✓as✓sh✓h(1)) oder _✓K_✓o_✓r_✓n_✓ _✓S_✓h_✓e_✓l_✓l (k✓ks✓sh✓h(1)). Abweichungen gibt es in den Bereichen, in denen volle Kompatibili- tät zwischen TOS und POSIX nicht erreichbar ist. ✓ ✓ A✓Au✓uf✓fr✓ru✓uf✓f Wenn die m✓mu✓up✓pf✓fe✓el✓l Bestandteil von Gemini ist oder die Environmentva- riable M✓MU✓UP✓PF✓FE✓EL✓L_✓_P✓PR✓RO✓OF✓FI✓IL✓LE✓E_✓_R✓RE✓EA✓AD✓D nicht gesetzt ist, werden zunächst folgende Dateien ausgeführt: Systemprofile ('profile'): wird nacheinander in den durch die Environmentvariablen E✓ET✓TC✓CD✓DI✓IR✓R bzw. E✓ET✓TC✓C angegebenen Verzeichnis- sen und dann in \etc gesucht. Userprofile (ebenfalls 'profile'): wird im durch die Variable H✓HO✓OM✓ME✓E spezifierten Verzeichnis gesucht. Anderenfalls wird -- wenn die Shell interaktiv ist -- die Datei 'mupfel.rc' im durch H✓HO✓OM✓ME✓E spezifizierten Verzeichnis ausgeführt. Achtung: der mit den Standard-Gemini-Distributionen ausgelieferte 'profile' sorgt selbst für das Einlesen von 'mupfel.rc'. In Gemini wird anschließend noch die Datei 'gemini.mup' abgearbeitet. Damit ergibt sich folgende 'Aufgabenverteilung': profile Allgemeine Initialisierungen, Environmentvariablen, Programme, die beim ersten Start der Mupfel einmal gestartet werden sollen. mupfel.rc Dinge, die in jeder nachgestarteten Shell passieren sollen und nicht vererbt werden (Aliase, Shellfunk- tionen, Funktionstastenbelegungen usw.). gemini.mup (nur in Gemini) Automatisch zu startende GEM- Applikationen. O✓OP✓PT✓TI✓IO✓ON✓NE✓EN✓N Neben den auch per s✓se✓et✓t(1m) einstellbaren Shellflags können beim Aufruf folgende Optionen übergeben werden: -c _✓Z_✓e_✓i_✓c_✓h_✓e_✓n_✓k_✓e_✓t_✓t_✓e Die in der _✓Z_✓e_✓i_✓c_✓h_✓e_✓n_✓k_✓e_✓t_✓t_✓e angebenen Kommandos ausführen. Die_✓ _✓P_✓o_✓s_✓i_✓t_✓i_✓o_✓n_✓s_✓p_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r werden mit den zusätzlich übergebenen Ope- randen besetzt. Man beachte, daß die _✓Z_✓e_✓i_✓c_✓h_✓e_✓n_✓k_✓e_✓t_✓t_✓e nur ein Argument ist! Hinweis: normalerweise ist die Libraryfunktion s✓sy✓ys✓st✓te✓em✓m(2) auf diese Art und Weise implementiert. -i Die aufgerufene Shell ist _✓i_✓n_✓t_✓e_✓r_✓a_✓k_✓t_✓i_✓v. -s Wenn dieses Flag gesetzt ist oder keine _✓A_✓r_✓g_✓u_✓m_✓e_✓n_✓t_✓e angegeben sind, liest die Shell die Kommandos von der Standardeingabe ein. Damit kann man auch interaktiven Shells _✓P_✓o_✓s_✓i_✓t_✓i_✓o_✓n_✓s_✓p_✓a_✓r_✓a_✓m_✓e_✓- _✓t_✓e_✓r übergeben. -- Kann als Trennzeichen zwischen Optionen und Operanden einge- setzt werden. O✓OP✓PE✓ER✓RA✓AN✓ND✓DE✓EN✓N - Ein einfacher Bindestrich wird als erster Operand erkannt und dann ignoriert. XXX: tut's das? _✓A_✓r_✓g_✓u_✓m_✓e_✓n_✓t Auf diese Werte werden die _✓P_✓o_✓s_✓i_✓t_✓i_✓o_✓n_✓s_✓p_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r gesetzt. _✓K_✓o_✓m_✓m_✓a_✓n_✓d_✓o_✓d_✓a_✓t_✓e_✓i Der Name einer Datei mit Kommandos. Wenn der Name Pfadtrenn- zeichen enthält, dann wird die Datei direkt eingelesen. Ande- renfalls wird die Datei im aktuellen Verzeichnis gesucht. Wenn sie auch dort nicht gefunden wird, wird die normale Suche anhand der Variable P✓PA✓AT✓TH✓H vorgenommen. Außerdem wird der spezielle _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r 0 auf den Wert _✓K_✓o_✓m_✓- _✓m_✓a_✓n_✓d_✓o_✓d_✓a_✓t_✓e_✓i gesetzt. Wenn dieser Operand nicht explizit ange- geben wurde, wird stattdessen der Name der Shell eingesetzt. _✓N_✓a_✓m_✓e Auf diesen Namen wird der spezielle _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r 0 gesetzt. Wenn er nicht angegeben wurde, wird stattdessen der Name der Shell eingesetzt. _✓Z_✓e_✓i_✓c_✓h_✓e_✓n_✓k_✓e_✓t_✓t_✓e Eine Zeichenkette mit einem oder mehreren auszuführenden Kom- mandos. Wenn sie leer ist, wird die Shell mit Rückgabewert 0 beendet. D✓DE✓EF✓FI✓IN✓NI✓IT✓TI✓IO✓ON✓NE✓EN✓N Ein _✓B_✓l_✓a_✓n_✓k ist ein Leerzeichen oder ein Tabulatorzeichen. Ein _✓W_✓o_✓r_✓t ist eine Folge von Zeichen, die von der Shell als ein einziges Objekt behanelt wird. Ein _✓B_✓e_✓z_✓e_✓i_✓c_✓h_✓n_✓e_✓r ist ein _✓W_✓o_✓r_✓t, das nur Buchstaben, Ziffern oder Underscores ('_') besteht und mit einem Buchstaben oder einer Ziffer beginnt. Ein _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r ist ein _✓B_✓e_✓z_✓e_✓i_✓c_✓h_✓n_✓e_✓r, eine Ziffer, oder eines der folgenden Zeichen: * @ # ? - $ ! Ein _✓M_✓e_✓t_✓a_✓z_✓e_✓i_✓c_✓h_✓e_✓n ist ein Symbol, das, wenn es nicht gequotet ist, _✓W_✓o_✓r_✓t_✓e voneinander trennt: | & ; ( ) < > _✓B_✓l_✓a_✓n_✓k Ein _✓K_✓o_✓n_✓t_✓r_✓o_✓l_✓l_✓s_✓y_✓m_✓b_✓o_✓l ist ein _✓W_✓o_✓r_✓t, das eine spezielle Funktion hat: || & && ; ;; ( ) | <Zeilenende> S✓SP✓PR✓RA✓AC✓CH✓HB✓BE✓ES✓SC✓CH✓HR✓RE✓EI✓IB✓BU✓UN✓NG✓G ✓ ✓ E✓Ei✓in✓nf✓fa✓ac✓ch✓he✓e ✓ K✓Ko✓om✓mm✓ma✓an✓nd✓do✓os✓s Ein _✓e_✓i_✓n_✓f_✓a_✓c_✓h_✓e_✓s_✓ _✓K_✓o_✓m_✓m_✓a_✓n_✓d_✓o ist eine durch ein _✓K_✓o_✓n_✓t_✓r_✓o_✓l_✓l_✓s_✓y_✓m_✓b_✓o_✓l abge- schlossene Folge optionalen Variablenzuweisungen und von nicht- leeren, voneinander durch _✓B_✓l_✓a_✓n_✓k_✓s getrennten _✓W_✓o_✓r_✓t_✓e_✓n und _✓U_✓m_✓l_✓e_✓n_✓k_✓u_✓n_✓g_✓e_✓n. Dabei gibt das erste Wort den Namen des auszuführenden Kommandos an. Außer in den unten angegebenen Fällen werden die restlichen Worte dem Kommando als Argumente übergeben (der Kommandoname wird als Argument 0 übergeben). Der _✓R_✓ü_✓c_✓k_✓g_✓a_✓b_✓e_✓w_✓e_✓r_✓t eines _✓E_✓i_✓n_✓f_✓a_✓c_✓h_✓k_✓o_✓m_✓m_✓a_✓n_✓d_✓o_✓s ist der Rückgabewert des ausgeführten Kommandos, sofern dieses normal terminiert. Bei Abbruch des Kommandos durch eine Ausnahmebedingung ist der Rückga- bewert betriebssystemabhängig (bei Abbruch durch CTRL-C unter TOS - 32 und unter Mag!x -68; unter MiNT die Signalnummer multipliziert mit 256; siehe k✓ki✓il✓ll✓l(1)). P✓Pi✓ip✓pe✓el✓li✓in✓ne✓es✓s Eine _✓P_✓i_✓p_✓e_✓l_✓i_✓n_✓e ist eine Folge eines oder mehrerer _✓K_✓o_✓m_✓m_✓a_✓n_✓d_✓o_✓s, die jeweils durch das Zeichen '|' voneinander getrennt sind. Die Standardausgabe jedes einzelnen Kommandos (mit Ausnahme des Letz- ten) ist mit der Standardeingabe des folgenden Kommandos verbunden. Dazu werden je nach Betriebssystemversion temporäre Dateien oder Pipes (unter MiNT) benutzt. Normalerweise werden alle Kommandos nacheinander ausgeführt, unter MiNT werden sie jedoch gleichzeitig als separate Prozesse gestartet. In diesem Fall wird auf das Terminieren des letzten Prozesses gewartet. Der _✓R_✓ü_✓c_✓k_✓g_✓a_✓b_✓e_✓w_✓e_✓r_✓t einer Pipeline ist der Rückgabewert des zuletzt ausgeführten Kommandos. L✓Li✓is✓st✓te✓en✓n Eine _✓L_✓i_✓s_✓t_✓e ist eine Folge einer oder mehrerer _✓K_✓o_✓m_✓m_✓a_✓n_✓d_✓o_✓s oder _✓P_✓i_✓p_✓e_✓l_✓i_✓n_✓e_✓s, die durch ';', '&', '&&' oder '||' voneinander getrennt und optional durch ';', '&' oder <Zeilenende> abgeschlossen sind. Unter diesen vier Symbolen haben jeweils ';' und '&' sowie '&&' und '||' denselben Vorrang; dabei haben ';' und '&' den geringeren Vorrang als die beiden anderen Symbole. Das Symbol ';' erzwingt eine sequentielle Ausführung der vorherge- henden Pipeline, bei '&' wird die Pipeline asynchron gestartet (das heißt, die m✓mu✓up✓pf✓fe✓el✓l wartet nicht auf die Beendigung). Wenn MiNT nicht installiert ist, wird '&' ignoriert. Das Symbol '&&' (bzw. '||') sorgt dafür, daß die auf das Symbol folgende Pipeline nur dann ausgeführt wird, wenn die vorhergehende Pipeline den Rückgabewert 0 (bzw. ungleich 0) hatte (daher auch die Bezeichnungen _✓U_✓n_✓d_✓-_✓L_✓i_✓s_✓t_✓e bzw. _✓O_✓d_✓e_✓r_✓-_✓L_✓i_✓s_✓t_✓e). Z✓Zu✓us✓sa✓am✓mm✓me✓en✓ng✓ge✓es✓se✓et✓tz✓zt✓te✓e ✓ K✓Ko✓om✓mm✓ma✓an✓nd✓do✓os✓s Ein _✓K_✓o_✓m_✓m_✓a_✓n_✓d_✓o ist entweder ein _✓e_✓i_✓n_✓f_✓a_✓c_✓h_✓e_✓s_✓ _✓K_✓o_✓m_✓m_✓a_✓n_✓d_✓o oder eines der folgenden Konstrukte. Wenn nicht anders angegeben, ist der _✓R_✓ü_✓c_✓k_✓g_✓a_✓- _✓b_✓e_✓w_✓e_✓r_✓t des Kommandos jeweils der Rückgabewert des zuletzt ausge- führten Kommandos. f✓fo✓or✓r _✓N_✓a_✓m_✓e [ i✓in✓n ✓ _✓W_✓o_✓r_✓t ] ✓ d✓do✓o _✓L_✓i_✓s_✓t_✓e d✓do✓on✓ne✓e Jedesmal, wenn das _✓f_✓o_✓r-Kommando ausgeführt wird, wird _✓N_✓a_✓m_✓e auf das nächste Element aus der 'in'-Liste gesetzt. Wenn 'in word...' ausgelassen wird, dann wird das _✓f_✓o_✓r-Kommando für jeden einzelnen der _✓P_✓o_✓s_✓i_✓t_✓i_✓o_✓n_✓s_✓p_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r ausgeführt. Die Aus- führung wird beendet, wenn die Liste vollständig abgearbeitet worden ist. c✓ca✓as✓se✓e _✓W_✓o_✓r_✓t i✓in✓n [ _✓M_✓u_✓s_✓t_✓e_✓r [ | _✓M_✓u_✓s_✓t_✓e_✓r ]... ) _✓L_✓i_✓s_✓t_✓e ;; ] ... e✓es✓sa✓ac✓c Das _✓c_✓a_✓s_✓e-Kommando führt die diejenige Liste aus, die zu dem ersten Muster paßt, auf das _✓W_✓o_✓r_✓t paßt. Die Muster haben die gleiche Form wie bei der _✓D_✓a_✓t_✓e_✓i_✓n_✓a_✓m_✓e_✓n_✓s_✓e_✓x_✓p_✓a_✓n_✓s_✓i_✓o_✓n (siehe unten) mit dem Unterschied daß die Sonderbehandlung von '.', '\' etc. entfällt. i✓if✓f _✓L_✓i_✓s_✓t_✓e t✓th✓he✓en✓n _✓L_✓i_✓s_✓t_✓e [ e✓el✓li✓if✓f _✓L_✓i_✓s_✓t_✓e t✓th✓he✓en✓n _✓L_✓i_✓s_✓t_✓e ] ... [ e✓el✓ls✓se✓e _✓L_✓i_✓s_✓t_✓e ] f✓fi✓i Die auf i✓if✓f folgende Liste wird ausgeführt. Falls sie den Rückgabewert Null hat, wird die Liste nach dem ersten t✓th✓he✓en✓n ausgeführt. Sonst wird die Liste nach e✓el✓li✓if✓f ausgeführt und bei Rückgabewert Null nach dem folgenden t✓th✓he✓en✓n weitergemacht. Wenn keine der Listen nach ✓ i✓if✓f oder e✓el✓li✓if✓f Null ergibt, wird die Liste nach e✓el✓ls✓se✓e ausgeführt. Wenn keine e✓el✓ls✓se✓e- oder t✓th✓he✓en✓n-Liste ausge- führt wurde, hat das gesamte Kommando den Rückgabewert Null. w✓wh✓hi✓il✓le✓e _✓L_✓i_✓s_✓t_✓e d✓do✓o _✓L_✓i_✓s_✓t_✓e d✓do✓on✓ne✓e Die w✓wh✓hi✓il✓le✓e-Liste wird fortlaufend ausgeführt, und, wenn sie den Rückgabewert Null hat, jeweils mit der d✓do✓o-Liste fortgefahren. Anderenfalls wird die Schleife abgebrochen. Wenn kein Kommando der d✓do✓o-Liste ausgeführt wurde, ist der Rückgabewert Null. u✓un✓nt✓ti✓il✓l _✓L_✓i_✓s_✓t_✓e d✓do✓o _✓L_✓i_✓s_✓t_✓e d✓do✓on✓ne✓e Die u✓un✓nt✓ti✓il✓l-Liste wird fortlaufend ausgeführt, und, wenn sie einen Rückgabewert ungleich Null hat, jeweils mit der d✓do✓o-Liste fortgefahren. Anderenfalls wird die Schleife abgebrochen. Wenn kein Kommando der d✓do✓o-Liste ausgeführt wurde, ist der Rückga- bewert Null. (✓( _✓L_✓i_✓s_✓t_✓e )✓) Führt _✓L_✓i_✓s_✓t_✓e in einer Subshell aus (d.h., Änderungen am Variablen bleiben auf die Subshell beschränkt). {✓{ _✓L_✓i_✓s_✓t_✓e ;}✓} Führt _✓L_✓i_✓s_✓t_✓e normal aus. _✓n_✓a_✓m_✓e (✓()✓) {✓{ _✓L_✓i_✓s_✓t_✓e ; } Definiert eine Funktion mit dem angegebenen Namen. Der Funk- tionsrumpf sind die in der Liste angegebenen Kommandos. Nähe- res zur Ausführung von Funktionen siehe unten. Die folgenden Worte werden nur erkannt, wenn sie das erste Wort eines Kommandos sind und nicht gequotet werden: i✓if✓f t✓th✓he✓en✓n e✓el✓ls✓se✓e e✓el✓li✓if✓f f✓fi✓i c✓ca✓as✓se✓e e✓es✓sa✓ac✓c f✓fo✓or✓r w✓wh✓hi✓il✓le✓e u✓un✓nt✓ti✓il✓l d✓do✓o d✓do✓on✓ne✓e {✓{ }✓} K✓KO✓OM✓MM✓ME✓EN✓NT✓TA✓AR✓RE✓E Ein mit '#' beginnendes Wort und alle darauf folgenden Zeichen bis zum Zeilenende werden ignoriert. Q✓QU✓UO✓OT✓TI✓IN✓NG✓G Durch _✓Q_✓u_✓o_✓t_✓i_✓n_✓g kann man bestimmten Zeichen und Wörtern ihre spezi- elle Bedeutung nehmen. Jedes der _✓M_✓e_✓t_✓a_✓z_✓e_✓i_✓c_✓h_✓e_✓n hat eine solche spezielle Bedeutung und muß daher gequotet werden, wenn es für sich selbst stehen soll. Es gibt drei verschiedene Mechanisnmen zum _✓Q_✓u_✓o_✓t_✓i_✓n_✓g: das Voransetzen des Escapezeichens sowie das Klammern einfache oder doppelte Anführungsstriche. Ein nicht gequotetes Prozentzeichen ('%') ist das Escapezeichen. Es nimmt dem unmittelbar folgenden Symbol seine spezielle Bedeutung. Ausnahme: wenn das folgende Zeichen ein Zeilenende-Symbol ist, wird es ganz ignoriert und so als Zeilenfortsetzungszeichen interpre- tiert: so kann man überlange Zeilen in mehrere Zeilen aufteilen. Achtung: in Unix-Shells ist das Escapezeichen der Backslash ('\')! Mit dem Kommando s✓se✓et✓t(1m) läßt sich das Escapezeichen auch auf '^' oder '\' umstellen! Einfache Anführungsstriche nehmen allen eingeschlossenen Zeichen ihre spezielle Bedeutung. Innerhalb einfacher Anführungsstriche dürfen keine weiteren einfachen Anführungsstriche auftauchen, selbst wenn sie vom Escape-Zeichen eingeleitet werden. Doppelte Anführungsstriche nehmen allen eingeschlossenen Zeichen bis auf $ ' % ihre spezielle Bedeutung, wbei das Escapezeichen nur dann seine Escape-Funktion hat, wenn es vor einem der folgenden Zeichen steht: $ ' " % <Zeilenende> Doppelter Anführungsstriche können mithilfe des Escapezeichens verschachtelt werden. Innerhalb doppelter Anführungsstriche haben die Symbole '*' und '@' eine spezielle Bedeutung (siehe unten). P✓PA✓AR✓RA✓AM✓ME✓ET✓TE✓ER✓R Ein _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r kann verschiedene Werte aufnehmen und entspricht den Variablen konventioneller Programmiersprachen. Er kann ein _✓B_✓e_✓z_✓e_✓i_✓c_✓h_✓n_✓e_✓r, eine Nummer oder einer der unter S✓Sp✓pe✓ez✓zi✓ie✓el✓ll✓le✓e ✓ P✓Pa✓ar✓ra✓am✓me✓et✓te✓er✓r angegebenen Zeichen sein. Eine _✓V_✓a_✓r_✓i_✓a_✓b_✓l_✓e ist ein durch einen Bezeichner spezifizierter Parameter. Ein Parameter ist gesetzt, wenn ihm ein Wert zugewiesen worden ist (dabei sind auch leere Zeichenketten erlaubt). Ist ein Parameter einmal gesetzt, kann er nur durch das Kommando u✓un✓ns✓se✓et✓t(1m) wieder in den ungesetzten Zustand gebracht werden. Einer _✓V_✓a_✓r_✓i_✓a_✓b_✓l_✓e kann man durch eine Anweisung der Form _✓N_✓a_✓m_✓e=[_✓W_✓e_✓r_✓t] einen Wert zuweisen (wenn kein Wert angegeben ist, wird eine leere Zeichenkette zugewiesen). _✓W_✓e_✓r_✓t wird dabei zuvor folgenden Umwand- lungen unterzogen: Tilde-, Parameter- und Variablen-Expansion, Kommandosubstitution und Entfernung von Quote-Zeichen. Eine Auf- trennung in einzelne Worte findet außer bei "$@" (siehe unten) nicht statt. P✓Po✓os✓si✓it✓ti✓io✓on✓ns✓sp✓pa✓ar✓ra✓am✓me✓et✓te✓er✓r Ein _✓P_✓o_✓s_✓i_✓t_✓i_✓o_✓n_✓s_✓p_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r ist ein durch eine Ziffer zwischen 1 und 9 bezeichneter Parameter. Positionsparameter werden beim Shellaufruf (auf die Werte der zusätzlichen Argumente) oder mittels des Kom- mandos s✓se✓et✓t(1m) gesetzt. Achtung: unmittelbar kann nur auf die ersten neun Positionspara- meter zugegriffen werden (Ausnahme: siehe unter S✓Sp✓pe✓ez✓zi✓ie✓el✓ll✓le✓e ✓ P✓Pa✓ar✓ra✓am✓me✓e-✓- t✓te✓er✓r). Mit s✓sh✓hi✓if✓ft✓t(1m) können sie um ein Argument 'verschoben' werden. S✓Sp✓pe✓ez✓zi✓ie✓el✓ll✓le✓e ✓ P✓Pa✓ar✓ra✓am✓me✓et✓te✓er✓r Einige Parameter werden auf spezielle Art und Weise interpretiert; Zuweisungen an diese Parameter sind nicht möglich. *✓* wird zu den Positionsparametern expandiert. Wenn die Expansion innerhalb doppelter Anführungsstriche passiert, ist das Ergebnis ein einziges Wort, in dem die einzelnen Parameter jeweils durch das erste Zeichen aus I✓IF✓FS✓S voneinander getrennt aufgeführt sind (wenn I✓IF✓FS✓S leer oder nicht gesetzt ist, werden Leerzeichen genommen). @✓@ wird ebenfalls zu den Positionsparametern expandiert. Wenn die Expansion innerhalb doppelter Anführungsstriche passiert, wird jeder Parameter zu einem separaten Wort expandiert. "$@" ist also zu "$1" "$2" "$3"... äquivalent. Wenn es keine Positi- onsparameter gibt, expandiert "$@" zu Nichts, d.h. es wird ignoriert. #✓# wird zur Anzahl (dezimal) der Positionsparameter expandiert. ?✓? wird zum Rückgabewert (dezimal) des letzten ausgeführten Kom- mandos expandiert. -✓- wird zu einer Zeichenkette mit den aktuell gesetzten Shell- flags (vom Aufruf oder per s✓se✓et✓t(1m) gesetzt) expandiert. $✓$ wird zur Prozeß-ID (dezimal) der aktuellen Shell expandiert. !✓! wird zur Prozeß-ID (dezimal) des zuletzt ausgeführten Hinter- grundkommandos expandiert. 0✓0 wird zum Namen der Shell oder des Shellscripts expandiert. S✓Sh✓he✓el✓ll✓lv✓va✓ar✓ri✓ia✓ab✓bl✓le✓en✓n Folgende Variablen werden von der Shell benutzt. In manchen Fällen werden sie auch automatisch gesetzt. A✓AP✓PP✓PD✓DE✓EF✓FA✓AU✓UL✓LT✓T Defaulteinstellungen für Programme mit der Extension APP (siehe K✓KO✓OM✓MM✓MA✓AN✓ND✓DO✓OA✓AU✓US✓SF✓FÜ✓ÜH✓HR✓RU✓UN✓NG✓G). A✓AR✓RG✓GV✓V Wird für die Übergabe von Argumenten mittels des ARGV- Verfahrens benutzt. C✓CD✓DP✓PA✓AT✓TH✓H Suchpfad für das Kommando cd(1m). Enthält eine durch ';' oder ',' getrennte Liste von Pfaden, in denen das Kom- mando c✓cd✓d nach dem gewünschten Zielverzeichnis sucht. C✓CO✓OL✓LU✓UM✓MN✓NS✓S Anzahl der Spalten im aktuellen Terminal. Ist nur dann korrekt gesetzt, wenn es sich um die Gemini-eigene Mupfel handelt oder die Mupfel in einem Terminalfenster läuft, daß die entsprechenden Systemaufrufe (F✓Fc✓cn✓nt✓tl✓l(2)) unter- stützt (Beispiel: 'Miniwin'). Anderenfalls wird der Wert aus dem ererbten Environment übernommen oder aus den Line-A-Variablen ermittelt. E✓ET✓TC✓C Hier werden Dateien gesucht, die traditionell im /etc- Verzeichnis eines Unix-Systems gesucht werden. E✓ET✓TC✓CD✓DI✓IR✓R Hier werden Dateien gesucht, die traditionell im /etc- Verzeichnis eines Unix-Systems gesucht werden (hat Vorrang vor E✓ET✓TC✓C). G✓GE✓EM✓MD✓DE✓EF✓FA✓AU✓UL✓LT✓T Defaulteinstellungen für GEM-Programme (siehe K✓KO✓OM✓M-✓- M✓MA✓AN✓ND✓DO✓OA✓AU✓US✓SF✓FÜ✓ÜH✓HR✓RU✓UN✓NG✓G). G✓GE✓EM✓MS✓SU✓UF✓FF✓FI✓IX✓X Kommaseparierte Liste von Extensions, an denen GEM-Pro- gramme erkannt werden. Beispiel: prg,app,grp,acc H✓HI✓IS✓ST✓TF✓FI✓IL✓LE✓E Name der Historydatei für h✓hi✓is✓st✓to✓or✓ry✓y(1m). H✓HO✓OM✓ME✓E Das 'Heimatverzeichnis' des Benutzers. Defaultziel, wenn c✓cd✓d(1m) ohne Argumente ausgeführt wird. I✓IF✓FS✓S Die Zeichen aus dem _✓I_✓n_✓t_✓e_✓r_✓n_✓a_✓l_✓ _✓F_✓i_✓e_✓l_✓d_✓ _✓S_✓e_✓p_✓a_✓r_✓a_✓t_✓o_✓r werden innerhalb von Eingaben als Trennzeichen benutzt (siehe auch r✓re✓ea✓ad✓d(1m)). Normaleinstellung ist: <Leerzeichen><Tabulatorzeichen><Zeilenendezeichen> K✓KE✓EE✓EP✓PF✓FR✓RE✓EE✓E Soviel Speicherplatz (in Bytes!) wird beim Kopieren freigehalten (wenn nicht gesetzt: rund 32K). K✓KO✓OB✓BO✓OL✓LD✓D_✓_P✓PA✓AT✓TH✓H (nur in GEMINI) Verzeichnis, in dem `Kobold' (sofern vorhanden) liegt. L✓LI✓IN✓NE✓EN✓NO✓O Zeilennummer innerhalb des gerade ausgeführten Shellscripts. Diese Variable verliert ihre spezielle Bedeutung, wenn man ihr etwas zuweist. L✓LI✓IN✓NE✓ES✓S Anzahl der Zeilen im aktuellen Terminal. Ist nur dann korrekt gesetzt, wenn es sich um die Gemini-eigene Mupfel handelt oder die Mupfel in einem Terminalfenster läuft, daß die entsprechenden Systemaufrufe (F✓Fc✓cn✓nt✓tl✓l(2)) unter- stützt (Beispiel: 'Miniwin'). Anderenfalls wird der Wert aus dem ererbten Environment übernommen oder aus den Line-A-Variablen ermittelt. M✓MU✓UP✓PF✓FE✓EL✓L_✓_P✓PR✓RO✓OF✓FI✓IL✓LE✓E_✓_R✓RE✓EA✓AD✓D Gesetzt, wenn die Mupfel die Datei 'profile' gelesen hat. O✓OL✓LD✓DP✓PW✓WD✓D Letztes aktuelles Verzeichnis (siehe c✓cd✓d(1m)). O✓OP✓PT✓T_✓_n✓na✓am✓me✓e_✓_e✓ex✓xt✓t Einstellungen für das Programm 'name.ext' (siehe K✓KO✓OM✓M-✓- M✓MA✓AN✓ND✓DO✓OA✓AU✓US✓SF✓FÜ✓ÜH✓HR✓RU✓UN✓NG✓G). O✓OP✓PT✓TI✓IO✓ON✓NP✓PA✓AT✓TH✓H Enthält den Namen des Verzeichnisses, das die Optionsda- teien enthält (siehe unter Z✓ZE✓EI✓IL✓LE✓EN✓NE✓ED✓DI✓IT✓TO✓OR✓R: O✓Op✓pt✓ti✓io✓on✓ns✓sk✓ko✓om✓mp✓pl✓le✓et✓t-✓- t✓ti✓ie✓er✓ru✓un✓ng✓g). P✓PA✓AT✓TH✓H Suchpfad für Kommandos. Enthält eine durch ';' oder ',' getrennte Liste von Pfaden, in denen nach Kommandos gesucht wird (siehe K✓KO✓OM✓MM✓MA✓AN✓ND✓DO✓OA✓AU✓US✓SF✓FÜ✓ÜH✓HR✓RU✓UN✓NG✓G). P✓PS✓S1✓1 Der Wert dieser Variable wird expandiert und als Prompt- zeichen benutzt (siehe P✓PR✓RO✓OM✓MP✓PT✓TI✓IN✓NG✓G). P✓PS✓S2✓2 Der Wert dieser Variable wird expandiert und als sekun- däres Promptzeichen benutzt (siehe P✓PR✓RO✓OM✓MP✓PT✓TI✓IN✓NG✓G). P✓PS✓S4✓4 Der Wert dieser Variable wird expandiert und vor jeder Trace-Ausgabe (siehe Shelloption -x) auf dem Bildschirm ausgegeben. Beispiel: PS4='[$LINENO]+ ' Standardwert ist '+ '. P✓PW✓WD✓D Aktuelles Verzeichnis (siehe c✓cd✓d(1m)). R✓RE✓EP✓PL✓LY✓Y Wird von r✓re✓ea✓ad✓d(1m) gesetzt, wenn kein Variablenname ange- geben wurde. R✓RO✓OW✓WS✓S Entspricht L✓LI✓IN✓NE✓ES✓S und ist nur aus Gründen der Kompatibi- lität mit alten Mupfel-Versionen vorhanden. S✓SC✓CR✓RA✓AP✓PD✓DI✓IR✓R (nur in Gemini) Wenn das GEM-Klemmbrett-Verzeichnis bei Geminis Pro- grammstart noch nicht initialisiert ist, wird es auf das hier angegebene Verzeichnis gesetzt. S✓SE✓EC✓CO✓ON✓ND✓DS✓S Anzahl der Sekunden seit Aufruf der Shell. Diese Variable verliert ihre spezielle Bedeutung, wenn man ihr einen Wert zuweist. S✓SH✓HE✓EL✓LL✓L Vollständiger Name der Kommandoshell. Wird von einer interaktiven Mupfel automatisch initialisiert, wenn nicht schon vorher gesetzt. S✓ST✓TD✓DE✓ER✓RR✓R Das Vorhandensein dieser Variable signalisiert gestarteten Programmen, daß die Mupfel den GEMDOS-Kanal 2 (stderr) bereits für die Ausgabe von Fehlermeldungen initialisiert hat. S✓SU✓UF✓FF✓FI✓IX✓X Kommaseparierte Liste von Extensions, an denen ausführ- bare Programme erkannt werden. Beispiel: ttp,mup,prg,app,tos,acc,gtp Achtung: auch leere Suffixe sind erlaubt! T✓TE✓ER✓RM✓M (nur in Gemini) Wird für Programme gesetzt, die innerhalb der Gemini- Konsole ablaufen und enthält den Namen der Terminalemulation. T✓TE✓ER✓RM✓MC✓CA✓AP✓P (nur in Gemini) Enthält eine Beschreibung der vom VT52-Emulator der Gemini-Konsole unterstützten Escape-Sequenzen (siehe t✓te✓er✓rm✓mc✓ca✓ap✓p(5)). T✓TH✓HR✓RA✓AS✓SH✓HD✓DI✓IR✓R (nur in Gemini) Zugriffspfad für das Verzeichnis, für das das Papierkorb- Symbol steht. T✓TM✓MP✓PD✓DI✓IR✓R Temporäres Verzeichnis für Hilfsdateien. Wird zum Bei- spiel für Pipelines benötigt, wenn das benutzte Betriebsystem keine echten Pipes unterstützt. T✓TO✓OP✓PW✓WI✓IN✓ND✓D (nur in Gemini) Pfad des Gemini-Verzeichnisfensters, das zuletzt 'oben' war. T✓TO✓OS✓SD✓DE✓EF✓FA✓AU✓UL✓LT✓T Defaulteinstellungen für TOS-Programme (siehe K✓KO✓OM✓M-✓- M✓MA✓AN✓ND✓DO✓OA✓AU✓US✓SF✓FÜ✓ÜH✓HR✓RU✓UN✓NG✓G). E✓EX✓XP✓PA✓AN✓NS✓SI✓IO✓ON✓N Unter _✓E_✓x_✓p_✓a_✓n_✓s_✓i_✓o_✓n versteht man die textuelle Ersetzung bestimmter Teile der Eingabe durch ihren 'Wert'. Sie findet statt, nachdem die Eingabezeile in einzelne Worte aufgeteilt worden ist. Folgende Formen von Expansion werden durchgeführt: _✓T_✓i_✓l_✓d_✓e_✓-_✓E_✓x_✓p_✓a_✓n_✓s_✓i_✓o_✓n, _✓P_✓a_✓r_✓a_✓m_✓e_✓- _✓t_✓e_✓r_✓- und _✓V_✓a_✓r_✓i_✓a_✓b_✓l_✓e_✓n_✓-_✓E_✓x_✓p_✓a_✓n_✓s_✓i_✓o_✓n, _✓K_✓o_✓m_✓m_✓a_✓n_✓d_✓o_✓s_✓u_✓b_✓s_✓i_✓t_✓u_✓t_✓i_✓o_✓n, _✓W_✓o_✓r_✓t_✓t_✓r_✓e_✓n_✓n_✓u_✓n_✓g und _✓D_✓a_✓t_✓e_✓i_✓n_✓a_✓m_✓e_✓n_✓s_✓-_✓E_✓x_✓p_✓a_✓n_✓s_✓i_✓o_✓n. Dabei ändert sich die Anzahl der Worte ändert ausschließlich durch _✓W_✓o_✓r_✓t_✓t_✓r_✓e_✓n_✓n_✓u_✓n_✓g und _✓D_✓a_✓t_✓e_✓i_✓n_✓a_✓m_✓e_✓n_✓s_✓-_✓E_✓x_✓p_✓a_✓n_✓s_✓i_✓o_✓n. Die einzige Ausnahme für diese Regel ist die Expansion von "$@" (siehe oben). T✓Ti✓il✓ld✓de✓ee✓ex✓xp✓pa✓an✓ns✓si✓io✓on✓n Wenn ein Wort nur aus '~' (Tilde) besteht oder mit '~\' beginnt (jeweils vollständig ungequoted), dann wird die Tilde durch den Wert der Environmentvariable HOME ersetzt. Wenn HOME leer oder nicht gesetzt ist, sind die Resultate unspezifiert. P✓Pa✓ar✓ra✓am✓me✓et✓te✓er✓r-✓-E✓Ex✓xp✓pa✓an✓ns✓si✓io✓on✓n Das Zeichen '$' leitet eine Parameter-Expansion oder eine Kommando- Substition ein. Zur Parameter-Expansion braucht das zu expandie- rende Symbol nicht geklammert zu sein. Es dürfen allerdings geschweifte Klammern benutzt werden, wenn sonst eine Verwechslung zwischen Parametername und nachfolgendem Text auftreten könnte: ${_✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r} Der Wert von _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r wird eingefügt. In allen folgenden Beispielen wird _✓W_✓o_✓r_✓t einer Tilde-Expansion, Parameter-Expansion und Kommando-Substitution unterworfen. ${_✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r:-_✓W_✓o_✓r_✓t} Default-Werte benutzen: Wenn _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r nicht gesetzt oder leer ist, wird die Expansion von _✓W_✓o_✓r_✓t eingesetzt. Ansonsten wird der Wert von _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r eingefügt. ${_✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r-_✓W_✓o_✓r_✓t} Default-Werte benutzen: Wenn _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r nicht gesetzt ist, wird die Expansion von _✓W_✓o_✓r_✓t eingesetzt. Ansonsten wird der Wert von _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r eingefügt. ${_✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r:=_✓W_✓o_✓r_✓t} Default-Werte zuweisen: Wenn _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r nicht gesetzt oder leer ist, wird ihm die Expansion von _✓W_✓o_✓r_✓t zugewiesen. Anschließend wird der Wert von _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r eingefügt. Positionsparameter und spezielle Parameter können auf diese Art und Weise nicht verändert werden. ${_✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r=_✓W_✓o_✓r_✓t} Default-Werte zuweisen: Wenn _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r nicht gesetzt ist, wird ihm die Expansion von _✓W_✓o_✓r_✓t zugewiesen. Anschließend wird der Wert von _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r eingefügt. Positionsparameter und spezielle Parameter können auf diese Art und Weise nicht verändert werden. ${_✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r:?_✓W_✓o_✓r_✓t} Fehler anzeigen, falls leer oder nicht gesetzt: Wenn _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r nicht gesetzt oder leer ist, wird die Expansion von _✓W_✓o_✓r_✓t als Fehlermeldung ausgegeben (und eine nicht-interaktive Shell abgebrochen). Anderenfalls wird der Wert von _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r einge- fügt. ${_✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r?_✓W_✓o_✓r_✓t} Fehler anzeigen, falls nicht gesetzt: Wenn _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r nicht gesetzt leer ist, wird die Expansion von _✓W_✓o_✓r_✓t als Fehlermel- dung ausgegeben (und eine nicht-interaktive Shell abgebro- chen). Anderenfalls wird der Wert von _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r eingefügt. ${_✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r:+_✓W_✓o_✓r_✓t} Ersatzwert benutzen: Wenn _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r nicht gesetzt oder leer ist, wird nichts eingefügt. Anderenfalls wird die Expansion von _✓W_✓o_✓r_✓t eingesetzt. ${_✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r+_✓W_✓o_✓r_✓t} Ersatzwert benutzen: Wenn _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r nicht gesetzt ist, wird nichts eingefügt. Anderenfalls wird die Expansion von _✓W_✓o_✓r_✓t eingesetzt. ${#_✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r} Fügt die Stringlänge von _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r ein. Das Ergebnis ist unspezifiert, wenn _✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r * oder @ ist. ${_✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r#_✓W_✓o_✓r_✓t} ${_✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r##_✓W_✓o_✓r_✓t} ${_✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r%_✓W_✓o_✓r_✓t} ${_✓P_✓a_✓r_✓a_✓m_✓e_✓t_✓e_✓r%%_✓W_✓o_✓r_✓t} tuts nicht. K✓Ko✓om✓mm✓ma✓an✓nd✓do✓os✓su✓ub✓bs✓st✓ti✓it✓tu✓ut✓ti✓io✓on✓n Die Shell kann innerhalb einer Zeichenkette Kommandos durch deren Ausgaben ersetzen. Dazu setzt man die auszuwertenden Kommandos in Backquotes (`...`) oder klammert sie wie folgt: $( ... ). Zei- lenende-Zeichen am Ende der Ausgabe der Kommandos werden entfernt. ... to be continued ... W✓Wo✓or✓rt✓tt✓tr✓re✓en✓nn✓nu✓un✓ng✓g D✓Da✓at✓te✓ei✓in✓na✓am✓me✓en✓ns✓se✓ex✓xp✓pa✓an✓ns✓si✓io✓on✓n E✓En✓nt✓tf✓fe✓er✓rn✓nu✓un✓ng✓g ✓ v✓vo✓on✓n ✓ Q✓Qu✓uo✓ot✓te✓es✓s U✓UM✓ML✓LE✓EN✓NK✓KU✓UN✓NG✓G E✓Ei✓in✓ng✓ga✓ab✓be✓eu✓um✓ml✓le✓en✓nk✓ku✓un✓ng✓g A✓Au✓us✓sg✓ga✓ab✓be✓eu✓um✓ml✓le✓en✓nk✓ku✓un✓ng✓g A✓Au✓us✓sg✓ga✓ab✓be✓eu✓um✓ml✓le✓en✓nk✓ku✓un✓ng✓g ✓ m✓mi✓it✓t ✓ A✓An✓nh✓hä✓än✓ng✓ge✓en✓n A✓Au✓us✓sg✓ga✓ag✓ge✓eu✓um✓ml✓le✓en✓nk✓ku✓un✓ng✓g ✓ v✓vo✓on✓n ✓ F✓Fe✓eh✓hl✓le✓er✓rm✓me✓el✓ld✓du✓un✓ng✓ge✓en✓n H✓He✓er✓re✓e-✓-D✓Do✓ok✓ku✓um✓me✓en✓nt✓te✓e F✓FU✓UN✓NK✓KT✓TI✓IO✓ON✓NE✓EN✓N A✓AL✓LI✓IA✓AS✓SE✓E J✓JO✓OB✓B-✓-K✓KO✓ON✓NT✓TR✓RO✓OL✓LL✓LE✓E S✓SI✓IG✓GN✓NA✓AL✓LE✓E K✓KO✓OM✓MM✓MA✓AN✓ND✓DO✓OA✓AU✓US✓SF✓FÜ✓ÜH✓HR✓RU✓UN✓NG✓G E✓EN✓NV✓VI✓IR✓RO✓ON✓NM✓ME✓EN✓NT✓T E✓EX✓XI✓IT✓T ✓ S✓ST✓TA✓AT✓TU✓US✓S P✓PR✓RO✓OM✓MP✓PT✓TS✓S Z✓ZE✓EI✓IL✓LE✓EN✓NE✓ED✓DI✓IT✓TO✓OR✓R E✓EI✓IN✓NG✓GE✓EB✓BA✓AU✓UT✓TE✓E ✓ K✓KO✓OM✓MM✓MA✓AN✓ND✓DO✓OS✓S A✓AU✓UT✓TO✓OR✓R Mupfel: Copyright (c) Stefan Eissing (se@ac.maus.de) Dokumentation: Copyright (c) 9. August 1994 Julian F. Reschke (jr@ms.maus.de) S✓SI✓IE✓EH✓HE✓E ✓ A✓AU✓UC✓CH✓H mupftool(1), progtool(1), texttool(1)